package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.UserBean;

/**
 * 用户业务接口
 */
public interface IUserService {
    /**
     * 用户登陆，登陆成功返回登陆对象，并同时添加日志信息
     *
     * @param userName 用户名
     * @param pwd      密码
     * @return 登陆对象
     */
    public UserBean login(String userName, String pwd);

    /**
     * 动态条件分页查询
     *
     * @param pageNo   页码
     * @param userName 用户名
     * @return 分页对象（编号、用户名、密码、真实姓名）
     */
    public IPage<UserBean> findByItem(Integer pageNo, String userName);

    /**
     * 添加用户，同时添加用户所包含的角色数组
     * 先查询该用户名是否存在，存在false，不存在true
     *
     * @param user   用户对象
     * @param roleId 角色编号数组
     */
    public boolean add(UserBean user, Integer[] roleId);

    /**
     * 根据用户id删除用户，
     * 先判断是否为登陆用户，如果是，删除失败，如果不是，先删除该用户对应的中间表信息，再进行用户表的删除
     *
     * @param id 用户编号
     * @UserBean 登陆用户
     */
    public boolean del(Integer id, UserBean loginUser);

    /**
     * 根据用户id查询用户信息，同时查询用户拥有的权限角色集合
     *
     * @param id 用户编号
     * @return 用户对象
     */
    public UserBean findById(Integer id);

    /**
     * 根据用户id修改用户的角色
     * 先将旧id数组删除，再添加新的数组
     *
     * @param userId 用户编号
     * @param roleId 角色数组
     */
    public void updateRole(Integer userId, Integer[] roleId);

    /**
     * 按id修改密码
     *
     * @param userId 用户编号
     * @param pwd    新密码
     */
    public void updatePwd(Integer userId, String pwd);
}
